﻿Public Class BeheerKlantForm

    Private _myKlantRow As ArtikelsDataSet.KlantenRow

#Region "Constructor/Initialisatie"

    ''' <summary>
    ''' Constructor voor het bijwerken van een klant in een bestaande dataset
    ''' </summary>
    ''' <param name="idKlant"></param>
    Public Sub New(ByVal idKlant As Integer)
        InitializeComponent()
        _myKlantRow = Utility.Data.Klanten.FindById(idKlant)
        Me.KlantenBindingSource.DataSource = Utility.Data
        Me.KlantenBindingSource.Position = Utility.Data.Klanten.Rows.IndexOf(_myKlantRow)
    End Sub

#End Region

#Region "Events"

    Protected Overrides Sub OnKeyUp(ByVal e As KeyEventArgs)
        MyBase.OnKeyUp(e)
        Select Case e.KeyCode
            Case Keys.F2
                KlantBijwerken()
        End Select
    End Sub

    Private Sub BijwerkenButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BijwerkenButton.Click
        KlantBijwerken()
    End Sub

    Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs)
        MyBase.OnFormClosing(e)
        Me.KlantenBindingSource.EndEdit()
        If (Not _myKlantRow.RowState = DataRowState.Unchanged) Then
            Dim result As DialogResult = MessageBox.Show("Deze klant is gewijzigd. Wil je de wijzigingen bewaren?", "Bewaren", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation)
            Select Case result
                Case Windows.Forms.DialogResult.Yes
                    KlantBijwerken()
                Case Windows.Forms.DialogResult.Cancel
                    e.Cancel = True
                Case Windows.Forms.DialogResult.No
                    ' annuleer de wijzigingen en laat sluiten
                    _myKlantRow.RejectChanges()
            End Select
        End If
    End Sub

#End Region

#Region "Private helpers"

    Private Sub KlantBijwerken()
        Try
            Me.Validate()
            Me.KlantenBindingSource.EndEdit()
            Dim klantenTableAdapter As New ArtikelsDataSetTableAdapters.KlantenTableAdapter
            klantenTableAdapter.Update(Utility.Data.Klanten)
            DialogResult = Windows.Forms.DialogResult.OK
            Close()
        Catch ex As Exception
            log.WriteError("BeheerKlantForm.KlantBijwerken", ex)
            MsgBox.ShowError("Er ging iets fout tijdens het bewaren. Probeer later opnieuw.")
        End Try
    End Sub

#End Region

End Class
